#ifndef __MYGTK__H__
#define __MYGTK__H__

#include <gtk/gtk.h>

typedef GtkWidget Widget_t;
typedef GtkWidget Container_t;
typedef GtkAccelGroup Group_t;
typedef GtkToolItem Toolitem_t;

/*******************gtkWindow.h**************************/
/*创建一个窗口*/
Widget_t *createGTKWindow(int argc, char **argv, char* title, int size[2]);
/*给窗口设置图标*/
void setIcon(Widget_t* window, const gchar* filename);
/*设置子元素和本身的边距*/
void setPadding(Widget_t* root, int pad);
/*进入主循环*/
void showWindow(GtkWidget* window);
/*********************************************************/

/********************gtkButton.h**************************/
/*创建按钮*/
Widget_t *createButton(char* text, _Bool ATL);
/*创建单选按钮*/
Widget_t *createCheckButton(char *text, _Bool checked);
/*给按钮添加聚焦提示*/
void setButtonFocusTip(Widget_t* button, char* tip);
/*给按钮添加点击实现方法*/
#define setButtonClickAction(button, func) \
	g_signal_connect(button, "clicked", G_CALLBACK(func), NULL)
/*********************************************************/

/***********************gtkBox.h**************************/
/*创建普通菜单项目*/
Widget_t *createItem(char *itemName);
/*创建图标菜单项目*/
Widget_t *createPItem(char *pic, Group_t *group);
/*创建菜单项目组*/
Group_t *createGroup(Widget_t *root);
/*设置图标菜单项目快捷键*/
void setQuickKey(Widget_t *item, Group_t *group, int GDK);
/*给菜单项目添加实现方法*/
#define setBoxAction(box, func) \
	g_signal_connect(G_OBJECT(box), "activate", G_CALLBACK(func), NULL)
/*********************************************************/

/**********************gtkVbox.h**************************/
/*创建顶部菜单*/
Widget_t *createVbox();
/*获取一个菜单容器*/
Container_t *getContainerOfVbox();
/*将多个菜单项目添加到一个菜单项目中，即次级菜单*/
void addItemToItem(Widget_t *parent, Widget_t *item[], int num);
/*将菜单项目添加到菜单容器中*/
void addItemToContainer(Container_t* container, Widget_t *item);
/*将菜单容器添加到顶部菜单中*/
void addContainerToVbox(Widget_t* vBox, Container_t* container);
/*********************************************************/

/**********************gtkEbox.h**************************/
/*创建弹出式菜单*/
Widget_t *createEbox();
/*将多个菜单项目添加到弹出式菜单*/
void addItemToEbox(Widget_t *eBox, Widget_t *item[], int num);
/*********************************************************/

/********************gtkToolbar.h*************************/
/*创建工具栏项目*/
Toolitem_t *createToolItem(char *pic);
/*创建分割线*/
Toolitem_t *createSep();
/*创建工具栏*/
Widget_t *createToolBar();
/*将多个菜单项目添加到工具栏*/
void addItemToToolbar(Widget_t *toolBar, Toolitem_t *item[], int num);
/*将工具栏添加到菜单*/
void addToolbarToBox(Widget_t *box, Widget_t *toolbar, int num);
/*********************************************************/

/*********************gtkLabel.h**************************/
/*创建标签*/
Widget_t *createLabel(char *text);
/*设置标签的文本*/
void setTextOfLabel(Widget_t *label, char *text);
/*获取标签的文本*/
const char *getTextOfLabel(Widget_t *label);
/*********************************************************/

/*********************gtkEntry.h**************************/
/*创建行文本框*/
Widget_t *createEntry(const char* text, int max);
/*设置行文本框的最大字符长度*/
void setMaxOfEntry(Widget_t *entry, int max);
/*设置行文本框的文本*/
void setTextOfEntry(Widget_t *entry, const char* text);
/*获取行文本框的文本*/
const char* getTextOfEntry(Widget_t *entry);
/*设置行文本框是否可用*/
void setEnableOfEntry(Widget_t *entry, _Bool enable);
/*设置行文本框的文本是否可视*/
void setVisibilityOfEntry(Widget_t *entry, _Bool visibility);
/*********************************************************/

/*********************gtkTextarea.h**************************/
/*创建多行文本框*/
Widget_t *createTextArea(const char* text, int max);
/*********************************************************/

/*********************gtkLayout.h**************************/
/*获取相对布局容器*/
Container_t *getGridContainer(Widget_t* root, int mode);
/*获取绝对布局容器*/
Container_t *getAbsoluteContainer(Widget_t* root);
/*将控件添加至容器中*/
void grid(Container_t* container, Widget_t* button);
void pack(Container_t* container, Widget_t* item, int pos[4]);
/*获取按钮类的容器*/
Container_t *getContainerOfButton(Widget_t* root, int mode);
/*********************************************************/

#endif